home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 August: Tool Chest / Dev.CD Aug 98 TC.toast / Tool Chest / Development Kits / MPW etc. / MPW-GM / Interfaces&Libraries / Interfaces / PInterfaces / OSUtils.p < prev    next >
Encoding:
Text File  |  1998-02-17  |  8.9 KB  |  379 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        OSUtils.p
  3.  
  4.      Contains:    OS Utilities Interfaces.
  5.  
  6.      Version:    Technology:    Mac OS 8
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1985-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT OSUtils;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __OSUTILS__}
  28. {$SETC __OSUTILS__ := 1}
  29.  
  30. {$I+}
  31. {$SETC OSUtilsIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __MACTYPES__}
  35. {$I MacTypes.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __MIXEDMODE__}
  38. {$I MixedMode.p}
  39. {$ENDC}
  40. {  HandToHand and other memory utilties were moved to MacMemory.h }
  41. {$IFC UNDEFINED __MACMEMORY__}
  42. {$I MacMemory.p}
  43. {$ENDC}
  44. {  GetTrapAddress and other trap table utilties were moved to Patches.h }
  45. {$IFC UNDEFINED __PATCHES__}
  46. {$I Patches.p}
  47. {$ENDC}
  48. {  Date and Time utilties were moved to DateTimeUtils.h }
  49. {$IFC UNDEFINED __DATETIMEUTILS__}
  50. {$I DateTimeUtils.p}
  51. {$ENDC}
  52. {$IFC NOT TARGET_OS_MAC }
  53. {$IFC UNDEFINED __ENDIAN__}
  54. {$I Endian.p}
  55. {$ENDC}
  56. {$ENDC}
  57.  
  58.  
  59. {$PUSH}
  60. {$ALIGN MAC68K}
  61. {$LibExport+}
  62.  
  63.  
  64. CONST
  65.     useFree                        = 0;
  66.     useATalk                    = 1;
  67.     useAsync                    = 2;
  68.     useExtClk                    = 3;                            { Externally clocked }
  69.     useMIDI                        = 4;
  70.  
  71.     false32b                    = 0;                            { 24 bit addressing error }
  72.     true32b                        = 1;                            { 32 bit addressing error }
  73.  
  74.                                                                 {  result types for RelString Call  }
  75.     sortsBefore                    = -1;                            { first string < second string }
  76.     sortsEqual                    = 0;                            { first string = second string }
  77.     sortsAfter                    = 1;                            { first string > second string }
  78.  
  79.     dummyType                    = 0;
  80.     vType                        = 1;
  81.     ioQType                        = 2;
  82.     drvQType                    = 3;
  83.     evType                        = 4;
  84.     fsQType                        = 5;
  85.     sIQType                        = 6;
  86.     dtQType                        = 7;
  87.     nmType                        = 8;
  88.  
  89.  
  90. TYPE
  91.     QTypes                                = SignedByte;
  92.     SysParmTypePtr = ^SysParmType;
  93.     SysParmType = PACKED RECORD
  94.         valid:                    UInt8;
  95.         aTalkA:                    UInt8;
  96.         aTalkB:                    UInt8;
  97.         config:                    UInt8;
  98.         portA:                    INTEGER;
  99.         portB:                    INTEGER;
  100.         alarm:                    LONGINT;
  101.         font:                    INTEGER;
  102.         kbdPrint:                INTEGER;
  103.         volClik:                INTEGER;
  104.         misc:                    INTEGER;
  105.     END;
  106.  
  107.     SysPPtr                                = ^SysParmType;
  108.     QElemPtr = ^QElem;
  109.     QElem = RECORD
  110.         qLink:                    QElemPtr;
  111.         qType:                    INTEGER;
  112.         qData:                    ARRAY [0..0] OF INTEGER;
  113.     END;
  114.  
  115. {$IFC TARGET_OS_MAC }
  116.     QHdrPtr = ^QHdr;
  117.     QHdr = RECORD
  118.         qFlags:                    INTEGER;
  119.         qHead:                    QElemPtr;
  120.         qTail:                    QElemPtr;
  121.     END;
  122.  
  123. {$ELSEC}
  124. {
  125.    QuickTime 3.0:
  126.    this version of QHdr contains the Mutex necessary for
  127.    non-mac non-interrupt code
  128. }
  129.     QHdrPtr = ^QHdr;
  130.     QHdr = RECORD
  131.         qFlags:                    INTEGER;
  132.         pad:                    INTEGER;
  133.         MutexID:                LONGINT;
  134.         qHead:                    QElemPtr;
  135.         qTail:                    QElemPtr;
  136.     END;
  137.  
  138. {$ENDC}  {TARGET_OS_MAC}
  139.  
  140.  
  141.  
  142. {$IFC TYPED_FUNCTION_POINTERS}
  143.     DeferredTaskProcPtr = PROCEDURE(dtParam: LONGINT);
  144. {$ELSEC}
  145.     DeferredTaskProcPtr = Register68kProcPtr;
  146. {$ENDC}
  147.  
  148.     DeferredTaskUPP = UniversalProcPtr;
  149.  
  150. CONST
  151.     uppDeferredTaskProcInfo = $0000B802;
  152.  
  153. FUNCTION NewDeferredTaskProc(userRoutine: DeferredTaskProcPtr): DeferredTaskUPP;
  154.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  155.     INLINE $2E9F;
  156.     {$ENDC}
  157.  
  158. PROCEDURE CallDeferredTaskProc(dtParam: LONGINT; userRoutine: DeferredTaskUPP);
  159.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  160.     {To be implemented:  Glue to move parameters into registers.}
  161.     {$ENDC}
  162.  
  163. TYPE
  164.     DeferredTaskPtr = ^DeferredTask;
  165.     DeferredTask = RECORD
  166.         qLink:                    QElemPtr;
  167.         qType:                    INTEGER;
  168.         dtFlags:                INTEGER;
  169.         dtAddr:                    DeferredTaskUPP;
  170.         dtParam:                LONGINT;
  171.         dtReserved:                LONGINT;
  172.     END;
  173.  
  174. {$IFC TARGET_OS_MAC }
  175.     MachineLocationPtr = ^MachineLocation;
  176.     MachineLocation = RECORD
  177.         latitude:                Fract;
  178.         longitude:                Fract;
  179.         CASE INTEGER OF
  180.         0: (
  181.             dlsDelta:            SInt8;                                    {  signed byte; daylight savings delta  }
  182.             );
  183.         1: (
  184.             gmtDelta:            LONGINT;                                {  use low 24-bits only  }
  185.             );
  186.     END;
  187.  
  188. {$ELSEC}
  189. {
  190.     QuickTime 3.0:
  191.     Alignment of MachineLocation is weird. The union above used for delta
  192.     tends not to work on non-Mac compilers.
  193. }
  194.     MachineLocation = RECORD
  195.         latitude:                Fract;
  196.         longitude:                Fract;
  197.         delta:                    BigEndianLong;                            {  high byte is daylight savings delta, low 24-bits is GMT delta  }
  198.     END;
  199.  
  200. {$ENDC}  {TARGET_OS_MAC}
  201.  
  202. FUNCTION IsMetric: BOOLEAN;
  203.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  204.     INLINE $3F3C, $0004, $A9ED;
  205.     {$ENDC}
  206. FUNCTION GetSysPPtr: SysPPtr;
  207.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  208.     INLINE $2EBC, $0000, $01F8;
  209.     {$ENDC}
  210.  
  211. {
  212.     NOTE: SysBeep() has been moved to Sound.h.  
  213.           We could not automatically #include Sound.h in this file
  214.           because Sound.h indirectly #include's OSUtils.h which
  215.           would make a circular include.
  216. }
  217. FUNCTION DTInstall(dtTaskPtr: DeferredTaskPtr): OSErr;
  218.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  219.     INLINE $205F, $A082, $3E80;
  220.     {$ENDC}
  221.  
  222.  
  223. FUNCTION GetMMUMode: SInt8;
  224.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  225.     INLINE $1EB8, $0CB2;
  226.     {$ENDC}
  227. PROCEDURE SwapMMUMode(VAR mode: SInt8);
  228.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  229.     INLINE $205F, $1010, $A05D, $1080;
  230.     {$ENDC}
  231. PROCEDURE Delay(numTicks: UInt32; VAR finalTicks: UInt32);
  232.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  233.     INLINE $225F, $205F, $A03B, $2280;
  234.     {$ENDC}
  235.  
  236. FUNCTION WriteParam: OSErr;
  237. PROCEDURE Enqueue(qElement: QElemPtr; qHeader: QHdrPtr);
  238.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  239.     INLINE $225F, $205F, $A96F;
  240.     {$ENDC}
  241. FUNCTION Dequeue(qElement: QElemPtr; qHeader: QHdrPtr): OSErr;
  242.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  243.     INLINE $225F, $205F, $A96E, $3E80;
  244.     {$ENDC}
  245. FUNCTION SetCurrentA5: LONGINT;
  246.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  247.     INLINE $2E8D, $2A78, $0904;
  248.     {$ENDC}
  249. FUNCTION SetA5(newA5: LONGINT): LONGINT;
  250.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  251.     INLINE $2F4D, $0004, $2A5F;
  252.     {$ENDC}
  253. FUNCTION InitUtil: OSErr;
  254.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  255.     INLINE $A03F, $3E80;
  256.     {$ENDC}
  257.  
  258. {$IFC TARGET_CPU_PPC }
  259. PROCEDURE MakeDataExecutable(baseAddress: UNIV Ptr; length: UInt32);
  260. {$ENDC}  {TARGET_CPU_PPC}
  261.  
  262. {$IFC TARGET_CPU_68K }
  263. FUNCTION SwapInstructionCache(cacheEnable: BOOLEAN): BOOLEAN;
  264. PROCEDURE FlushInstructionCache;
  265.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  266.     INLINE $7001, $A098;
  267.     {$ENDC}
  268. FUNCTION SwapDataCache(cacheEnable: BOOLEAN): BOOLEAN;
  269. PROCEDURE FlushDataCache;
  270.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  271.     INLINE $7003, $A098;
  272.     {$ENDC}
  273. PROCEDURE FlushCodeCache;
  274.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  275.     INLINE $A0BD;
  276.     {$ENDC}
  277. FUNCTION FlushCodeCacheRange(address: UNIV Ptr; count: UInt32): OSErr;
  278.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  279.     INLINE $225F, $205F, $7009, $A098, $3E80;
  280.     {$ENDC}
  281. {$ENDC}  {TARGET_CPU_68K}
  282.  
  283. PROCEDURE ReadLocation(VAR loc: MachineLocation);
  284.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  285.     INLINE $205F, $203C, $000C, $00E4, $A051;
  286.     {$ENDC}
  287. PROCEDURE WriteLocation({CONST}VAR loc: MachineLocation);
  288.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  289.     INLINE $205F, $203C, $000C, $00E4, $A052;
  290.     {$ENDC}
  291.  
  292.  
  293. {$IFC OLDROUTINENAMES }
  294. FUNCTION IUMetric: BOOLEAN;
  295.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  296.     INLINE $3F3C, $0004, $A9ED;
  297.     {$ENDC}
  298. {$ENDC}  {OLDROUTINENAMES}
  299.  
  300. {
  301.     NOTE: SysEnvirons is obsolete.  You should be using Gestalt.
  302. }
  303. { Environs Equates }
  304.  
  305. CONST
  306.     curSysEnvVers                = 2;                            { Updated to equal latest SysEnvirons version }
  307.  
  308.  
  309. TYPE
  310.     SysEnvRecPtr = ^SysEnvRec;
  311.     SysEnvRec = RECORD
  312.         environsVersion:        INTEGER;
  313.         machineType:            INTEGER;
  314.         systemVersion:            INTEGER;
  315.         processor:                INTEGER;
  316.         hasFPU:                    BOOLEAN;
  317.         hasColorQD:                BOOLEAN;
  318.         keyBoardType:            INTEGER;
  319.         atDrvrVersNum:            INTEGER;
  320.         sysVRefNum:                INTEGER;
  321.     END;
  322.  
  323.  
  324. CONST
  325.                                                                 {  Machine Types  }
  326.     envMac                        = -1;
  327.     envXL                        = -2;
  328.     envMachUnknown                = 0;
  329.     env512KE                    = 1;
  330.     envMacPlus                    = 2;
  331.     envSE                        = 3;
  332.     envMacII                    = 4;
  333.     envMacIIx                    = 5;
  334.     envMacIIcx                    = 6;
  335.     envSE30                        = 7;
  336.     envPortable                    = 8;
  337.     envMacIIci                    = 9;
  338.     envMacIIfx                    = 11;
  339.  
  340.                                                                 {  CPU types  }
  341.     envCPUUnknown                = 0;
  342.     env68000                    = 1;
  343.     env68010                    = 2;
  344.     env68020                    = 3;
  345.     env68030                    = 4;
  346.     env68040                    = 5;
  347.  
  348.                                                                 {  Keyboard types  }
  349.     envUnknownKbd                = 0;
  350.     envMacKbd                    = 1;
  351.     envMacAndPad                = 2;
  352.     envMacPlusKbd                = 3;
  353.     envAExtendKbd                = 4;
  354.     envStandADBKbd                = 5;
  355.     envPrtblADBKbd                = 6;
  356.     envPrtblISOKbd                = 7;
  357.     envStdISOADBKbd                = 8;
  358.     envExtISOADBKbd                = 9;
  359.  
  360. FUNCTION SysEnvirons(versionRequested: INTEGER; VAR theWorld: SysEnvRec): OSErr;
  361.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  362.     INLINE $205F, $301F, $A090, $3E80;
  363.     {$ENDC}
  364.  
  365.  
  366.  
  367.  
  368.  
  369. {$ALIGN RESET}
  370. {$POP}
  371.  
  372. {$SETC UsingIncludes := OSUtilsIncludes}
  373.  
  374. {$ENDC} {__OSUTILS__}
  375.  
  376. {$IFC NOT UsingIncludes}
  377.  END.
  378. {$ENDC}
  379.